﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLayer.Implementacion;
using BusinessLayer.Interfaces;
using EntityLayer;
using DevExpress.Web.ASPxEditors;
using System.IO;
using System.Configuration;
namespace pryTransfinter.Transaciones
{
    public partial class wfrmAprobarTransferencia : System.Web.UI.Page
    {
        IFacadeGestionarTransferencia blGestionarTransferencia;
        public static string idresponsable = "E88456";
        IFacadeActualizarTransferencia blActualizarTransferencia;
        IFacadeSolicitarTrasnferencia blSolicitarTransferencia;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.cargarGrillaModificar();
                this.cargarCuentaModificar();
                this.cargarCuentaBeneficiarioModificar();
            }
        }
        public void grabarcuentaAfectadas() {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            for (int i = 0; i < grdMoficarTransferencia.VisibleRowCount; i++)
            {
                ASPxCheckBox chk = (ASPxCheckBox)grdMoficarTransferencia.FindRowCellTemplateControl(i, null, "chkEstado");
                if (chk.Checked)
                {
                    string estado = grdMoficarTransferencia.GetRowValues(i, "estado").ToString();
                    if (estado!="OFAC" || estado=="DUPLICADO" || estado=="DUPLICADA")
                    {
                        string nro = grdMoficarTransferencia.GetRowValues(i, "nroOperacion").ToString();
                        double montod = Convert.ToDouble(grdMoficarTransferencia.GetRowValues(i, "monto"));
                        string monedad = grdMoficarTransferencia.GetRowValues(i, "moneda").ToString();
                        string codigoCorresponsal = grdMoficarTransferencia.GetRowValues(i, "codigoCorresponsal").ToString();
                        string cliente = Convert.ToString(grdMoficarTransferencia.GetRowValues(grdMoficarTransferencia.FocusedRowIndex, "idcCliente"));
                        List<TB_Cuenta_Cliente> listaCuentaCliente = new List<TB_Cuenta_Cliente>();
                        listaCuentaCliente = blGestionarTransferencia.listaClientexID(cliente);
                        //; listaCuentaCliente[0].nroCuenta.ToString()
                        string nrocuenta = listaCuentaCliente[0].nroCuenta.ToString();
                        TB_CuentasAfectadas cuenta = new TB_CuentasAfectadas();
                        blActualizarTransferencia = new FacadeActualizarTransferencia();
                        List<TB_Corresponsal> ListarCuentaAbono = new List<TB_Corresponsal>();
                        ListarCuentaAbono = blActualizarTransferencia.ListarCuentaAbono(codigoCorresponsal);

                        List<TB_Cuenta_Cliente> ListarTipoMonedaCuenta = new List<TB_Cuenta_Cliente>();
                        ListarTipoMonedaCuenta = blActualizarTransferencia.ListarCuentaCliente(nrocuenta);

                        string monedacuenta = ListarTipoMonedaCuenta[0].TipoMoneda;
                        decimal saldo = Convert.ToDecimal(ListarTipoMonedaCuenta[0].saldoCuenta);
                        double tipocambio = 1;
                        double montoenviar = Convert.ToDouble(montod);
                        double montocomsision = 0;

                        if (montoenviar >= 0 && montoenviar <= 1000)
                        {
                            montocomsision = 18;
                        }

                        if (montoenviar >= 1001.00 && montoenviar <= 2500)
                        {
                            montocomsision = 25;
                        }

                        if (montoenviar >= 2501.00 && montoenviar <= 5000)
                        {
                            montocomsision = 35;
                        }

                        if (montoenviar >= 5001.00 && montoenviar <= 10000)
                        {
                            montocomsision = 70;
                        }

                        if (montoenviar >= 10001.00 && montoenviar <= 20000)
                        {
                            montocomsision = 120;
                        }
                        if (montoenviar >= 20001)
                        {
                            montocomsision = 150;
                        }

                        if (cboMonedaM.Text.Trim().ToUpper() == "USD")
                        {
                            if (monedacuenta == "USD")
                            {
                                tipocambio = 1.0000;
                            }
                            if (monedacuenta == "PEN")
                            {
                                tipocambio = 2.7500;
                            }
                        }
                        if (cboMonedaM.Text.Trim().ToUpper() == "EUR")
                        {
                            if (monedacuenta == "PEN")
                            {
                                tipocambio = 3.7529;
                            }
                        }

                        cuenta.nroOperacion = nro;
                        cuenta.moneda = monedad;
                        cuenta.ctaAbono = ListarCuentaAbono[0].ctaAbono;
                        cuenta.montoAbono = Convert.ToDecimal(montod);
                        cuenta.ctaComision = "522208000001";
                        cuenta.montoComision = Convert.ToDecimal(montocomsision);
                        cuenta.ctaDebito = nrocuenta;
                        cuenta.montoDebito = Convert.ToDecimal((montoenviar + montocomsision) * tipocambio);
                        cuenta.montoTRF = Convert.ToDecimal(montoenviar + montocomsision);
                        cuenta.tipoCambio = Convert.ToDecimal(tipocambio);
                        decimal saldofinal = 0;
                        saldofinal = saldo - Convert.ToDecimal((montoenviar + montocomsision) * tipocambio);
                        if (blActualizarTransferencia.InsertarCuentas(cuenta))
                        {
                            blActualizarTransferencia.ActualizarSaldoCliente(nrocuenta, saldofinal);
                        }
                    }
                    
                }
            }

           
        }

        void getOFAC(string codigo, string detalle)
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            List<OFA_EN> lista;

            string output = null;
            List<String> list = detalle.Split(' ').ToList();
            foreach (String s in list)
            {
                lista = new List<OFA_EN>();
                if (s == "SAC" || s == "EIRL" || s == "LA" || s.ToUpper() == "del".ToUpper() || s == "LTDA." || s == "LTDA" || s==string.Empty)
                {
                }
                else
                {
                    lista = blGestionarTransferencia.ListarOFac(s);
                    if (lista.Count != 0)
                    {
                        if (lista[0].codigoOFAC != null)
                        {
                            output = lista[0].codigoOFAC;
                        }

                        if (output != null || output == string.Empty)
                        {

                            blGestionarTransferencia.actualizarEstado(codigo, "OFAC", output);
                            
                            return;
                        }
                    }

                    else
                    {
                        List<ListaTransferenciasDuplicadas> listaDuplicados = new List<ListaTransferenciasDuplicadas>();
                        int count = 0;

                        listaDuplicados = (List<ListaTransferenciasDuplicadas>)blGestionarTransferencia.ListarTransferenciasDuplicadas();

                        if (codigo != string.Empty)
                        {
                            for (int i = 0; i < listaDuplicados.Count; i++)
                            {
                                //listaDuplicados[i].NROOPERACION1="";

                                if (listaDuplicados[i].NROOPERACION1 != null)
                                {
                                    if (listaDuplicados[i].NROOPERACION1 == codigo)
                                    {
                                        count += 1;
                                    }
                                }


                            }
                        }
                        if (count != 0)
                        {
                            blGestionarTransferencia.actualizarEstado(codigo, "DUPLICADO", null);
                            popupOK.HeaderText = "Mensaje";
                            lblmensOk.Text = "La transacción se encuentra en la lista de duplicadas.";
                            popupOK.ShowOnPageLoad = true;
                            return;
                        }
                        this.generarTrama(codigo);
                    }
                }
            }
            this.cargarGrillaModificar();
        }
        void generarTrama(string codigo)
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            string ruta = Server.MapPath(ConfigurationManager.AppSettings["RutaDat"]);
            List<Globales.lista_TransferenciaReponsable> lista = new List<Globales.lista_TransferenciaReponsable>();
            string a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s;
            int dat = 10000;
            int count = 0;
            try
            {
                lista = (List<Globales.lista_TransferenciaReponsable>)blGestionarTransferencia.listarTransferenciaEstado(codigo);
                string rutadat = Server.MapPath(ConfigurationManager.AppSettings["RutaDat"]);
                //string path = ruta + codigo + ".dat";
                string Filess = rutadat + "\\" + codigo + ".dat";



                a = "{1:F01BCPLPEPLAXXX0000000000}{2:I103" + lista[0].codigoCorresponsal + "XXXXN}{4:\n";
                b = ":20:" + lista[0].nroOperacion;
                c = ":23B:CRED\n";
                d = ":32A:" + lista[0].fecValor.ToString("yyyyMMdd").Substring(2, 6) + "" + lista[0].moneda.ToString() + "" + lista[0].monto.ToString().Replace(".", ",") + "\n";
                List<TB_Cuenta_Cliente> cliente = new List<TB_Cuenta_Cliente>();
                cliente = blGestionarTransferencia.listaClientexID(lista[0].idcCliente);
                e = ":50F:/" + cliente[0].nroCuenta.ToString().Replace("-", "") + "\n";
                f = "1/" + lista[0].nomCliente;
                g = "2/" + lista[0].dirCliente;
                h = "3/PE/SURCO LIMA";
                List<TB_Corresponsal> listacorresponsal = new List<TB_Corresponsal>();
                listacorresponsal = blGestionarTransferencia.listarCorrespansalxID(lista[0].codigoCorresponsal);
                j = ":53D:/" + listacorresponsal[0].ctaBanqueroCorresponsal;
                List<TB_BcoDestino> banco = new List<TB_BcoDestino>();
                IFacadeSolicitarTrasnferencia blSolicitarTransgferencia = new FacadeSolicitarTransferencia_Imp();
                banco = blSolicitarTransgferencia.getCodigoCorresponsal(lista[0].codigoBcoDestino);
                k = banco[0].nombreBcoDestibo;
                m = banco[0].ciudadBcoDestino + "," + banco[0].paisBcoDestino;
                n = ":57A:" + lista[0].codigoBcoDestino;
                o = ":59:/" + lista[0].cuentaBeneficiario;
                p = "" + lista[0].nomBeneficiario;
                q = "" + lista[0].dirBeneficiario;
                r = ":71A:" + lista[0].tipoCargo;
                s = "-}";
                using (FileStream fs = new FileStream(Filess, FileMode.Create, FileAccess.ReadWrite))
                {
                    fs.Close();
                }
                using (StreamWriter sw = new StreamWriter(Filess))
                {
                    sw.WriteLine(a);
                    sw.WriteLine(b);
                    sw.WriteLine(c);
                    sw.WriteLine(d);
                    sw.WriteLine(e);
                    sw.WriteLine(f);
                    sw.WriteLine(g);
                    sw.WriteLine(h);
                   // sw.WriteLine(i);
                    sw.WriteLine(j);
                    sw.WriteLine(k);
                    sw.WriteLine(m);
                    sw.WriteLine(n);
                    sw.WriteLine(o);
                    sw.WriteLine(p);
                    sw.WriteLine(q);
                    sw.WriteLine(r);
                    sw.WriteLine(s);
                    sw.Flush();
                    sw.Close();
                } 
                //using (StreamWriter writer = new StreamWriter(
                //new FileStream(Filess, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)))
                //{
                //    //writer.WriteLine(string.Format("{0} | {1} | {2} | {3}", DateTime.Now, e.Source, e.Message, e.InnerException));
                //    writer.WriteLine(a);
             
                //    writer.Flush();
                //    writer.Close();
                //}

                blGestionarTransferencia.actualizarEstado(codigo, "AUTORIZADA", null);
                
            }
            catch (Exception)
            {
            }
        }          
        void modificarTransaccion()
        {

            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            string idCliente = Convert.ToString(grdMoficarTransferencia.GetRowValues(grdMoficarTransferencia.FocusedRowIndex, "idcCliente"));
            try
            {
                TB_Transferencia objTransaccion = new TB_Transferencia();
                objTransaccion.nroOperacion = txtNrooperracionM.Text;
                objTransaccion.codigoBcoDestino = txtBancoDesM.Text;
                objTransaccion.fecCreacion = (DateTime)Session["fechaCreacionM"];
                objTransaccion.fecValor = dteFechaValorM.Date;
                objTransaccion.moneda = (string)cboMonedaM.Value;
                objTransaccion.monto = Convert.ToDecimal(txtMontoM.Text);
                objTransaccion.idcCliente = idCliente;
                objTransaccion.codBcoIntermediario = txtBancoIter1M.Text == string.Empty ? null : txtBancoIter1M.Text;
                objTransaccion.codBcoIntermediario1 = txtBancoIter2M.Text == string.Empty ? null : txtBancoIter2M.Text;
                //objTransaccion.codBcoIntermediario2 = txtBcoIntermediario2.Text == string.Empty ? null : txtBcoIntermediario2.Text;
                objTransaccion.detallePago = txtDetalleM.Text == string.Empty ? null : txtDetalleM.Text;
                objTransaccion.infBcoBco = txtINFBCOBCOM.Text == string.Empty ? null : txtINFBCOBCOM.Text;
                objTransaccion.observaciones = txtObservacionesM.Text == string.Empty ? null : txtObservacionesM.Text;
                objTransaccion.estado = "MODIFICADA";
                objTransaccion.comisiones = null;
                objTransaccion.textoDuplicidad = "";
                objTransaccion.codigoCorresponsal = txtBancoCorresponsalM.Text;
                objTransaccion.codigoOFAC = null;
                objTransaccion.matriculaOperador = idresponsable;
                objTransaccion.tipoCargo = (string)cboTipoCM.Value;
                objTransaccion.matriculaSupervisor = txtSupervisorM.Text;
                objTransaccion.cuentaBeneficiario = (string)cboCuentaBenefM.Value;
                objTransaccion.matriculaSupervisor = (string)Session["idSupervisorM"];

                if (blGestionarTransferencia.modificar(objTransaccion))
                {
                    popupOK.HeaderText = "Mensaje";
                    popupOK.ShowOnPageLoad = true;
                    lblmensOk.Text = "Se autorizó la transacción.";
                }
            }

            catch (Exception ex)
            {
                popupOK.HeaderText = "Error al autorizar la transacción.";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = ex.Message;
            }
        }

        void cargarGrillaModificar()
        {
            blActualizarTransferencia = new FacadeActualizarTransferencia();
            try
            {
                grdMoficarTransferencia.DataSource = blActualizarTransferencia.FiltroResponsableXMayorModificar(idresponsable);
                grdMoficarTransferencia.DataBind();
            }
            catch (Exception ex)
            {
                popupOK.HeaderText = "Error al cargar grilla";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = ex.Message;
            }
        }
        void cargarCuentaModificar()
        {
            blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            string cliente = Convert.ToString(grdMoficarTransferencia.GetRowValues(grdMoficarTransferencia.FocusedRowIndex, "idcCliente"));
            try
            {
                cboCuentaM.DataSource = blSolicitarTransferencia.listaClientexID(cliente);
                cboCuentaM.TextField = "nroCuenta";
                cboCuentaM.ValueField = "nroCuenta";
                cboCuentaM.DataBindItems();
                cboCuentaM.Items.Insert(0, new ListEditItem("[SELECCIONE]", ""));
            }
            catch (Exception ex)
            {
                popupOK.HeaderText = "Carga combo Cuenta Ordenante";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = ex.Message;
            }
        }

        void cargarCuentaBeneficiarioModificar()
        {
            blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            string cliente = Convert.ToString(grdMoficarTransferencia.GetRowValues(grdMoficarTransferencia.FocusedRowIndex, "idcCliente"));
            try
            {

                cboCuentaBenefM.DataSource = blSolicitarTransferencia.listarBeneficiarioXCliente(cliente);
                cboCuentaBenefM.TextField = "cuentaBeneficiario";
                cboCuentaBenefM.ValueField = "cuentaBeneficiario";
                cboCuentaBenefM.DataBindItems();
                cboCuentaBenefM.Items.Insert(0, new ListEditItem("[SELECCIONE]", ""));
                //cboCuentaBeneficiario.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                popupOK.HeaderText = "Carga combo Cuenta Beneficiario";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = ex.Message;
            }

        }

        protected void cboCuentaBenefM_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<TB_Beneficiario> listaBeneficiario = new List<TB_Beneficiario>();

            listaBeneficiario = this.obtenerBeneficiario(Convert.ToString(cboCuentaBenefM.Value));
            if (listaBeneficiario.Count != 0)
            {
                txtNombresBenM.Text = listaBeneficiario[0].nomBeneficiario;
                txtDireccionM.Text = listaBeneficiario[0].dirBeneficiario;
            }
        }
        List<TB_Beneficiario> obtenerBeneficiario(string id)
        {
            blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            List<TB_Beneficiario> listaBeneficiario = new List<TB_Beneficiario>();
            try
            {
                listaBeneficiario = blSolicitarTransferencia.getBeneficiario(id);
            }
            catch (Exception ex)
            {
                popupOK.HeaderText = "Error al obtener Beneficiario";
                popupOK.ShowOnPageLoad = true;
                lblmensOk.Text = ex.Message;
            }
            return listaBeneficiario;
        }


        void ActualizarEstadoTransc()
        {
            blSolicitarTransferencia = new FacadeSolicitarTransferencia_Imp();
            try
            {
                for (int i = 0; i < grdMoficarTransferencia.VisibleRowCount; i++)
                {
                    ASPxCheckBox chk = (ASPxCheckBox)grdMoficarTransferencia.FindRowCellTemplateControl(i, null, "chkestado");
                    string nroOperacion = grdMoficarTransferencia.GetRowValues(i, "nroOperacion").ToString();
                }
            }
            catch (Exception)
            {
            }
        }

        protected void btnModificar_Click(object sender, EventArgs e)
        {
            string nroOperacion1 = Convert.ToString(grdMoficarTransferencia.GetRowValues(grdMoficarTransferencia.FocusedRowIndex, "nroOperacion"));
            popupConfirmacionT.HeaderText = "Confirmar";
            popupConfirmacionT.ShowOnPageLoad = true;
            lblConfirmar.Text = "¿Desea mandar a modificar la transferencia " + nroOperacion1;
            Session["idestado"] = "M";

          
        }

        void ActualizarEstadoTransaccion()
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            string nroOperacion1 = Convert.ToString(grdMoficarTransferencia.GetRowValues(grdMoficarTransferencia.FocusedRowIndex, "nroOperacion"));

            try
            {
                if (blGestionarTransferencia.actualizarEstado(nroOperacion1, "MODIFICADA", null))
                {
                    popupOK.HeaderText = "Mensaje";
                    lblmensOk.Text = "Se modifico la transacción numero "+ nroOperacion1;
                    popupOK.ShowOnPageLoad = true;
                }
            }
            catch (Exception ex)
            {
                popupOK.HeaderText = "Error al modificar la transacción";
                lblmensOk.Text = ex.Message;
                popupOK.ShowOnPageLoad = true;
            }
            
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            string opcion = Session["idestado"] != null ? (string)Session["idestado"] : "S";
            if (opcion == "M")
            {
                //this.ActualizarEstadoTransc();
                this.ActualizarEstadoTransaccion();
            }
            else if (opcion=="A")
            {
                this.AutorizarTransacciones();
              
            }
            cargarGrillaModificar();
        }

        protected void btnAutorizar_Click(object sender, EventArgs e)
        {
            popupConfirmacionT.HeaderText = "Confirmar";
            popupConfirmacionT.ShowOnPageLoad = true;
            lblConfirmar.Text = "Esta seguro de autorizar las transacciones seleccionadas.";
            Session["idestado"] = "A";
        }

        private string getOFACDuplicado(string codigo, string detalle, string idccliente)
        {
            string resultado = "";
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            List<OFA_EN> lista;

            string output = null;

            List<String> list = detalle.Split(' ').ToList();

            foreach (String s in list)
            {
                if (s == "SAC" || s == "EIRL" || s == "LA" || s.ToUpper() == "del".ToUpper() || s == "LTDA." || s == "LTDA" || s == string.Empty)
                {
                }
                else
                {
                    lista = new List<OFA_EN>();

                    lista = blGestionarTransferencia.ListarOFac(s);
                    if (lista.Count != 0)
                    {
                        if (lista[0].codigoOFAC != null)
                        {
                            output = lista[0].codigoOFAC;
                        }

                        if (output != null || output == string.Empty)
                        {
                            blGestionarTransferencia.actualizarEstado(codigo, "OFAC", output);
                           
                            this.cargarGrillaModificar();
                            resultado = "O";
                            break;
                        }

                    }
                }



            }
            if (resultado != "O")
            {
                List<ListaTransferenciasDuplicadas> listaDuplicados = new List<ListaTransferenciasDuplicadas>();
                int count = 0;

                listaDuplicados = (List<ListaTransferenciasDuplicadas>)blGestionarTransferencia.ListarTransferenciasDuplicadas();

                if (codigo != string.Empty)
                {
                    for (int i = 0; i < listaDuplicados.Count; i++)
                    {
                        //listaDuplicados[i].NROOPERACION1="";

                        if (listaDuplicados[i].NROOPERACION1 != null)
                        {
                            if (listaDuplicados[i].NROOPERACION1 == codigo)
                            {
                                count += 1;
                                break;
                            }
                        }

                    }
                }
                if (count != 0)
                {
                    

                    resultado = "D";
                }


            }

            return resultado;
        }
        void AutorizarTransacciones()
        {
            int count = 0;
            for (int i = 0; i < grdMoficarTransferencia.VisibleRowCount; i++)
            {
                ASPxCheckBox chk = (ASPxCheckBox)grdMoficarTransferencia.FindRowCellTemplateControl(i, null, "chkEstado");
                if (chk.Checked)
                {
                    string estado= grdMoficarTransferencia.GetRowValues(i, "estado").ToString();
                    string codigo = grdMoficarTransferencia.GetRowValues(i, "nroOperacion").ToString();
                    string detalle = grdMoficarTransferencia.GetRowValues(i, "detallePago").ToString();
                    string idccliente = grdMoficarTransferencia.GetRowValues(i, "idcCliente").ToString();
                    //string idOpcion1 = Convert.ToString(grdMoficarTransferencia.GetRowValues(grdMoficarTransferencia.FocusedRowIndex, "nroOperacion"));
                    string resultado = this.getOFACDuplicado(codigo, detalle, idccliente);
                    if (estado != "OFAC" && estado != "DUPLICADO" && estado != "DUPLICADA")
                    {
                        if (resultado=="O")
                        {
                            popupOK.HeaderText = "Mensaje";
                            lblmensOk.Text = "La transacción se encuentra en la lista OFAC.";
                            popupOK.ShowOnPageLoad = true;
                            return;
                        }
                        if (resultado == "D")
                        {
                            popupOK.HeaderText = "Mensaje";
                            lblmensOk.Text = "La transacción se encuentra en la lista de Duplicadas.";
                            popupOK.ShowOnPageLoad = true;
                            return;
                        }
                        count += 1;
                        this.generarTrama(grdMoficarTransferencia.GetRowValues(i, "nroOperacion").ToString());
                
                        string nro = grdMoficarTransferencia.GetRowValues(i, "nroOperacion").ToString();
                        double montod = Convert.ToDouble(grdMoficarTransferencia.GetRowValues(i, "monto"));
                        string monedad = grdMoficarTransferencia.GetRowValues(i, "moneda").ToString();
                        string codigoCorresponsal = grdMoficarTransferencia.GetRowValues(i, "codigoCorresponsal").ToString();
                        string cliente = Convert.ToString(grdMoficarTransferencia.GetRowValues(grdMoficarTransferencia.FocusedRowIndex, "idcCliente"));
                        List<TB_Cuenta_Cliente> listaCuentaCliente = new List<TB_Cuenta_Cliente>();
                        listaCuentaCliente = blGestionarTransferencia.listaClientexID(cliente);
                        //; listaCuentaCliente[0].nroCuenta.ToString()
                        string nrocuenta = listaCuentaCliente[0].nroCuenta.ToString();
                        TB_CuentasAfectadas cuenta = new TB_CuentasAfectadas();
                        blActualizarTransferencia = new FacadeActualizarTransferencia();
                        List<TB_Corresponsal> ListarCuentaAbono = new List<TB_Corresponsal>();
                        ListarCuentaAbono = blActualizarTransferencia.ListarCuentaAbono(codigoCorresponsal);

                        List<TB_Cuenta_Cliente> ListarTipoMonedaCuenta = new List<TB_Cuenta_Cliente>();
                        ListarTipoMonedaCuenta = blActualizarTransferencia.ListarCuentaCliente(nrocuenta);

                        string monedacuenta = ListarTipoMonedaCuenta[0].TipoMoneda;
                        decimal saldo = Convert.ToDecimal(ListarTipoMonedaCuenta[0].saldoCuenta);
                        double tipocambio = 1;
                        double montoenviar = Convert.ToDouble(montod);
                        double montocomsision = 0;

                        if (montoenviar >= 0 && montoenviar <= 1000)
                        {
                            montocomsision = 18;
                        }

                        if (montoenviar >= 1001.00 && montoenviar <= 2500)
                        {
                            montocomsision = 25;
                        }

                        if (montoenviar >= 2501.00 && montoenviar <= 5000)
                        {
                            montocomsision = 35;
                        }

                        if (montoenviar >= 5001.00 && montoenviar <= 10000)
                        {
                            montocomsision = 70;
                        }

                        if (montoenviar >= 10001.00 && montoenviar <= 20000)
                        {
                            montocomsision = 120;
                        }
                        if (montoenviar >= 20001)
                        {
                            montocomsision = 150;
                        }

                        if (cboMonedaM.Text.Trim().ToUpper() == "USD")
                        {
                            if (monedacuenta == "USD")
                            {
                                tipocambio = 1.0000;
                            }
                            if (monedacuenta == "PEN")
                            {
                                tipocambio = 2.7500;
                            }
                        }
                        if (cboMonedaM.Text.Trim().ToUpper() == "EUR")
                        {
                            if (monedacuenta == "PEN")
                            {
                                tipocambio = 3.7529;
                            }
                        }

                        cuenta.nroOperacion = nro;
                        cuenta.moneda = monedad;
                        cuenta.ctaAbono = ListarCuentaAbono[0].ctaAbono;
                        cuenta.montoAbono = Convert.ToDecimal(montod);
                        cuenta.ctaComision = "522208000001";
                        cuenta.montoComision = Convert.ToDecimal(montocomsision);
                        cuenta.ctaDebito = nrocuenta;
                        cuenta.montoDebito = Convert.ToDecimal((montoenviar + montocomsision) * tipocambio);
                        cuenta.montoTRF = Convert.ToDecimal(montoenviar + montocomsision);
                        cuenta.tipoCambio = Convert.ToDecimal(tipocambio);
                        decimal saldofinal = 0;
                        saldofinal = saldo - Convert.ToDecimal((montoenviar + montocomsision) * tipocambio);
                        if (blActualizarTransferencia.InsertarCuentas(cuenta))
                        {
                            blActualizarTransferencia.ActualizarSaldoCliente(nrocuenta, saldofinal);
                        }
                        //string titulo = "Mensaje";
                        //string mensaje = "Se autorizó la transacción correctamente y se generó su trama correspondiente.";
                        //popupOK.HeaderText = "Mensaje";
                        //lblmensOk.Text = mensaje;
                        //popupOK.ShowOnPageLoad = true;
                    }
                    else 
                    {
                        //popupOK.HeaderText = "Mensaje";
                        //lblmensOk.Text = "La Transacción debe estar verificada u modificada.";
                        //popupOK.ShowOnPageLoad = true;
                    }
                    //this.getOFAC(grdMoficarTransferencia.GetRowValues(i, "nroOperacion").ToString(), Convert.ToString(grdMoficarTransferencia.GetRowValues(i, "detallePago")));
                    if (count==0)
                    {
                        string titulo = "Mensaje";
                        string mensaje = "";
                        popupOK.HeaderText = "No se generó ninguna trama, verificar la transacción en Alertas.";
                        lblmensOk.Text = mensaje;
                        popupOK.ShowOnPageLoad = true;
                    }
                    else
                    {
                        string titulo = "Mensaje";
                        string mensaje = "Se autorizó la transacción correctamente y se generó su trama correspondiente.";
                        popupOK.HeaderText = "Mensaje";
                        lblmensOk.Text = mensaje;
                        popupOK.ShowOnPageLoad = true;
                    }
                }
            }
        }

        protected void grdMoficarTransferencia_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.cargarGrillaModificar();
        }

        protected void grdMoficarTransferencia_FocusedRowChanged(object sender, EventArgs e)
        {

            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            List<Globales.lista_TransferenciaReponsable> lista = new List<Globales.lista_TransferenciaReponsable>();
            List<TB_Cuenta_Cliente> listaCuentaCliente = new List<TB_Cuenta_Cliente>();
            string idOpcion1 = Convert.ToString(grdMoficarTransferencia.GetRowValues(grdMoficarTransferencia.FocusedRowIndex, "nroOperacion"));
            this.cargarCuentaModificar();
            this.cargarCuentaBeneficiarioModificar();
            if (idOpcion1 != string.Empty)
            {
                lista = blGestionarTransferencia.listaVerificacion(idOpcion1);
                if (lista.Count==0)
                {
                    return;
                }
                txtMontoM.Text = lista[0].monto.ToString();
                txtNrooperracionM.Text = lista[0].nroOperacion;
                txtSupervisorM.Text = lista[0].nomSupervisor;
                txtBancoCorresponsalM.Text = lista[0].codigoCorresponsal;
                listaCuentaCliente = blGestionarTransferencia.listaClientexID(lista[0].idcCliente);
                if (listaCuentaCliente.Count != 0)
                {
                    cboCuentaM.Value = listaCuentaCliente[0].nroCuenta;
                }
                else
                {
                    return;
                }
                TxtNombreOrdM.Text = lista[0].nomCliente;
                txtBancoDesM.Text = lista[0].codigoBcoDestino;
                cboCuentaBenefM.Value = lista[0].cuentaBeneficiario;
                txtNombresBenM.Text = lista[0].nomBeneficiario;
                txtDireccionM.Text = lista[0].dirBeneficiario;
                cboTipoCM.Value = lista[0].tipoCargo;
                txtDetalleM.Text = lista[0].detallePago;
                txtINFBCOBCOM.Text = lista[0].infBcoBco;
                txtObservacionesM.Text = lista[0].observaciones;
                dteFechaValorM.Date = lista[0].fecValor;
                Session["fechaA"] = dteFechaValorM.Date;
                Session["fechaCreacionA"] = lista[0].fecCreacion;
                txtBancoDesM.Text = lista[0].codigoBcoDestino == null ? "" : lista[0].codigoBcoDestino;
                txtBancoIter1M.Text = lista[0].codBcoIntermediario == null ? "" : lista[0].codBcoIntermediario;
                txtBancoIter2M.Text = lista[0].codBcoIntermediario1 == null ? "" : lista[0].codBcoIntermediario1;
                cboMonedaM.Value = lista[0].moneda;
                Session["idSupervisorA"] = lista[0].matriculaSupervisor;
            }
        }
    }
}